Идея этого шага вот в чем. В Access таблица может формироваться из других таблиц.

Когда мастер форм Access сформирует форму на основе таблицы она будет вот такая.

Вот мы и будет прибывать сделать подобное в MFC. Пока просто на диалоговом окне попробуем. создаем приложение на базе диалогового и именем DaoTest. На диалоговое окно поместим ComboBox. Создадим свой класс CDaoCombo как наследник от CComboBox.
class CDaoCombo : public CComboBox
{
// Construction
public:
CDaoCombo();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDaoCombo)
//}}AFX_VIRTUAL
// Implementation
public:
void SetFields(CString csField); // установить имя поля
void GetRecord(); // получить записи
void SetRecordset(CDaoRecordset *cRecord); // установить набор записей
virtual ~CDaoCombo();
// Generated message map functions
protected:
//{{AFX_MSG(CDaoCombo)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CString csFieldName; // имя поля
CDaoRecordset * m_pRecord; // указатель на набор записей
};
Реализация функций.
////////////////////
// CDaoCombo
CDaoCombo::CDaoCombo()
{
}
CDaoCombo::~CDaoCombo()
{
}
BEGIN_MESSAGE_MAP(CDaoCombo, CComboBox)
//{{AFX_MSG_MAP(CDaoCombo)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//////////////////////////////
// CDaoCombo message handlers
void CDaoCombo::SetRecordset(CDaoRecordset *cRecord)
{
m_pRecord = cRecord;
}
void CDaoCombo::GetRecord()
{
m_pRecord->Open(); // открыть
m_pRecord->MoveFirst(); // в начало
// Пока есть записи
while (! m_pRecord->IsEOF())
{
COleVariant CValue;
m_pRecord->GetFieldValue(csFieldName,CValue); // получить запись
CString s=CValue.pbVal;
AddString(s);
m_pRecord->MoveNext(); // на следующую
}
m_pRecord->Close(); // закрыть
}
void CDaoCombo::SetFields(CString csField)
{
csFieldName = csField;
}
Использовать его в проекте проще простого. Для начала надо связать класс с элементом управления.

Создать набор записей.

Ну и теперь нужно создать объект набора записей вовремя, указать набор записей, поле и удалить вовремя.
BOOL CDaoTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_DaoCombo.SetRecordset(ciSet);
m_DaoCombo.SetFields("Name");
m_DaoCombo.GetRecord();
// Add "About..." menu item to system menu.
//......
}
void CDaoTestDlg::OnDestroy()
{
CDialog::OnDestroy();
delete ciSet;
}
Вот и все, результат будет вот таким.

В проекте находится класс CDaoCombo упaкованный для использования в Component Gallery как ogx файл.